
export interface IHeap<T> {
    delete: () => T;
    insert: (v: T) => void;
    size: () => number;
}

export interface IQueue<T> {
    enqueue: (v: T) => void;
    dequeue: () => T;
    size: () => number;
}

export interface IList<T> {
    get: (index: number) => T;
    set: (index: number, v: T) => void;
    remove: (index: number, numbers: number) => void;
    add: (v: T) => void;
    addAll: (v: T[]) => void;
    indexOf: (v: T) => number;
    size: () => number;
    subList: (start: number, end?: number) => T[];
}